using System;
using System.Diagnostics;
using System.Xml.Serialization;
using System.Collections;
using System.Xml.Schema;
using System.ComponentModel;
using System.Collections.Generic;


namespace CodeGenerator.Mvvm.ViewModelGenerator
{

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3074")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://codegenerator.mvvm.org")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://codegenerator.mvvm.org", IsNullable = false)]
    public partial class ViewModelGenerationOptions
    {

        private List<NamespaceInclude> namespacesField;

        private List<ViewModelEntityOption> entityField;

        [System.Xml.Serialization.XmlAttributeAttribute(AttributeName="file")]
        public string EntityFrameworkFile { get; set; }

        [System.Xml.Serialization.XmlAttributeAttribute(AttributeName="project")]
        public string EntityFrameworkProject { get; set; }

        [System.Xml.Serialization.XmlAttributeAttribute(AttributeName="commonBaseClass")]
        public string CommonBaseClass { get; set; }

        public ViewModelGenerationOptions()
        {
            this.entityField = new List<ViewModelEntityOption>();
            this.namespacesField = new List<NamespaceInclude>();
        }

        [System.Xml.Serialization.XmlArrayItemAttribute("Namespace", typeof(NamespaceInclude))]
        public List<NamespaceInclude> Namespaces
        {
            get
            {
                return this.namespacesField;
            }
            set
            {
                this.namespacesField = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("Entity")]
        public List<ViewModelEntityOption> Entities
        {
            get
            {
                return this.entityField;
            }
            set
            {
                this.entityField = value;
            }
        }
    }

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3074")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://codegenerator.mvvm.org")]
    public partial class NamespaceInclude
    {

        [System.Xml.Serialization.XmlTextAttribute()]
        public string Value { get; set; }

    }

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3074")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://codegenerator.mvvm.org")]
    public partial class ViewModelEntityOption
    {

        private List<ViewModelPropertyOptions> entityPropertyField;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Name { get; set; }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string BaseClass { get; set; }


        public ViewModelEntityOption()
        {
            this.entityPropertyField = new List<ViewModelPropertyOptions>();
        }

        [System.Xml.Serialization.XmlElementAttribute("EntityProperty")]
        public List<ViewModelPropertyOptions> EntityProperties
        {
            get
            {
                return this.entityPropertyField;
            }
            set
            {
                this.entityPropertyField = value;
            }
        }
    }

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3074")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://codegenerator.mvvm.org")]
    public partial class ViewModelPropertyOptions
    {

        private List<ViewModelAttributeOption> attributesField;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Name { get; set; }


        public ViewModelPropertyOptions()
        {
            this.attributesField = new List<ViewModelAttributeOption>();
        }

        [System.Xml.Serialization.XmlArrayItemAttribute("Attribute", typeof(ViewModelAttributeOption), IsNullable = false)]
        public List<ViewModelAttributeOption> Attributes
        {
            get
            {
                return this.attributesField;
            }
            set
            {
                this.attributesField = value;
            }
        }
    }

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3074")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://codegenerator.mvvm.org")]
    public partial class ViewModelAttributeOption
    {

        private List<ViewModelAttributeParameter> parametersField;

        private List<ViewModelGenerationOptionsEntityEntityPropertyAttributesAttributeNamedParametersNamedParameter> namedParametersField;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Class { get; set; }


        public ViewModelAttributeOption()
        {
            this.namedParametersField = new List<ViewModelGenerationOptionsEntityEntityPropertyAttributesAttributeNamedParametersNamedParameter>();
            this.parametersField = new List<ViewModelAttributeParameter>();
        }

        [System.Xml.Serialization.XmlArrayItemAttribute("Parameter", typeof(ViewModelAttributeParameter), IsNullable = false)]
        public List<ViewModelAttributeParameter> Parameters
        {
            get
            {
                return this.parametersField;
            }
            set
            {
                this.parametersField = value;
            }
        }

        [System.Xml.Serialization.XmlArrayItemAttribute("NamedParameter", typeof(ViewModelGenerationOptionsEntityEntityPropertyAttributesAttributeNamedParametersNamedParameter), IsNullable = false)]
        public List<ViewModelGenerationOptionsEntityEntityPropertyAttributesAttributeNamedParametersNamedParameter> NamedParameters
        {
            get
            {
                return this.namedParametersField;
            }
            set
            {
                this.namedParametersField = value;
            }
        }
    }

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3074")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://codegenerator.mvvm.org")]
    public partial class ViewModelAttributeParameter
    {

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Value { get; set; }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Type { get; set; }

    }

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3074")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://codegenerator.mvvm.org")]
    public partial class ViewModelGenerationOptionsEntityEntityPropertyAttributesAttributeNamedParametersNamedParameter
    {

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Value { get; set; }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Type { get; set; }

    }

}
